package edu.bigdata;

import java.text.ParseException;
import java.util.Random;
import java.util.Scanner;

/**
 * @Author zjh
 * @Date 2022-04-20 上午 7:57
 **/
public class application {
    /**
     * 每个scanner 可以设置数据有效性，以免用户输入不正确的数据
     */
    public static void main(String[] args) {
        System.out.println("=================== 欢迎进入东华智能开关灯系统！===================");
        final light light = new light();
        Scanner scan = new Scanner(System.in);

        //      用随机值模拟灯泡损坏
        final Random random = new Random();
        final int i = random.nextInt((10 - 1) + 1) + 1;
        //  大于 8 则异常 (数字高低决定异常概率）
        if (i > 8) {
            light.setHealth(5);
        }

        /**
         * 灯泡异常处理
         * */
        try {
            if (light.getHealth() == 5) {
                new bulbAnomalies.Input().method();
            }
            //如果出现异常，以下是不会执行的
            //由于未做持久化，灯泡状态默认为关闭
            light.setSwitchState(4);
            System.err.println(GLOBAL_STATE.SWITCH_STATE_OFF.getValue());

            System.out.println("请输入序号选择运行方式：");
            System.out.println(GLOBAL_STATE.RUN_MODE_STATE_AUTO.getKey() + "." + GLOBAL_STATE.RUN_MODE_STATE_AUTO.getValue() + "\n" +
                    GLOBAL_STATE.RUN_MODE_STATE_HM.getKey() + "." + GLOBAL_STATE.RUN_MODE_STATE_HM.getValue());
            // 判断是否还有输入
            if (scan.hasNext()) {
                /**
                 * 将运行方式存入灯对象，为后期准备持久化
                 * */
                int runMode = scan.nextInt();
                light.setRunMode(runMode);

                if (light.getRunMode() == 1) {
                    System.out.println("运行方式为：" + GLOBAL_STATE.RUN_MODE_STATE_AUTO.getValue());


                    if (light.getSwitchState() == 3) {
                        System.out.println("请输入定时关闭时间(eg: 16:37:00)：");
                    } else {
                        System.out.println("请输入定时开启时间(eg: 16:37:00)：");
                    }

                    final String timing = scan.next();
                    /**
                     * 将定时时间存入灯对象，为后期准备持久化
                     * */
                    light.setTiming(timing);

                    try {
                        final timer timer = new timer(timing);
                    } catch (ParseException e) {
                        e.printStackTrace();
                    }

                } else if (light.getRunMode() == 2) {
                    System.out.println("运行方式为：" + GLOBAL_STATE.RUN_MODE_STATE_HM.getValue());
                    System.out.println("请输入序号选择开关：");
                    System.out.println("3.开   4.关");
                    final int switchState = scan.nextInt();
                    light.setSwitchState(switchState);
                    if (light.getSwitchState() == 3) {
                        System.out.println("已开启");
                    } else {
                        System.err.println("已关闭");
                    }
                }

            }

        } catch (bulbAnomalies.WrongInputException e) {
            System.err.println(e.getMessage());
            /*这里可以选择哪一个管理员来维修（待拓展）*/
            System.out.println("请输入995,联系管理员前来维修！");
            if (scan.hasNext()) {
                if (scan.nextInt() == 995) {
                    System.out.println("已选择" + new administrator().getName() + "维修，请耐心等待！！！");
                }
            }
        } finally {
            scan.close();
        }

    }
}
